Advantages of Gosling Emacs:

1. The program itself is much smaller.
GNU Emacs uses about 250k more pure storage.
As a result, Gosling Emacs can run on machines
that cannot run GNU Emacs.  There is not much difference
in the amount of impure storage in the two programs.

2. In some versions there is support for other forks to
establish communications channels to Emacs (using sockets?).

3. There is a direct interface to dbm (data bases).


Advantages of GNU Emacs:

* True Lisp, not Mocklisp.

GNU Emacs's extension language has real symbols, lists
and vectors.  Many extensions are much simpler, and some
become possible that were nearly impossible in Gosling Emacs.
Many primitives can have cleaner interfaces, and some features
need not be put in as special primitives because you can do
them easily yourself.

* But Mocklisp still works.

An automatic conversion package plus a run-time library
allows you to convert a Mocklisp library into a Lisp library.

* Commands are better crafted.

For example, nearly every editing function for which a
numeric argument would make sense as a repeat count does
accept a repeat count, and does handle a negative argument
in the way you would expect.

* The manual is clearer.

Everyone tells me it is a very good manual.

* Better on-line documentation.

Both functions and variables have documentation strings that
describe exactly how to use them.

* C mode is smart.

It really knows how to indent each line correctly,
for most popular indentation styles.  (Some variables
control which style is used.)

* Compatible with PDP-10 Emacs, Multics Emacs and Zmacs.

The commands in GNU Emacs are nearly the same as in the
original Emacs and the other Emacses which imitated it.
(A few have been changed to fit the Unix environment better.)

* Support for Gosling's Emacs commands.

M-x set-gosmacs-bindings rebinds many editing commands for
compatibility with Gosling's Emacs.
M-x set-gnu-bindings reverses the change.

* Side-by-side windows.

You can split a GNU Emacs window either horizontally or
vertically.

* Redisplay is faster.

GNU Emacs sends about the same stuff to the terminal that
Gosling's does, but GNU Emacs uses much less CPU time to
decide what to do.

* Entirely termcap-driven.

GNU Emacs has nearly no special code for any terminal type.  Various
new termcap strings make it possible to handle all terminals nearly as
fast as they could be handled by special-case code.

* Display-hiding features.

For example, Outline Mode makes it possible for you to edit
an outline, making entire sub-branches of the outline visible
or invisible when you wish.

* You can interrupt with Control-G.

Even a looping Lisp program can be stopped this way.
And even a loop in C code does not stop you from killing
Emacs and getting back to your shell.

* Per-buffer Undo.

You can undo the last several changes, in each buffer
independently.

* The editor code itself is clean.

Many people have remarked on how much they enjoy reading
the code for GNU Emacs.


One other note: The program etc/cvtmail that comes with GNU Emacs can
be used to convert a mail directory for Gosling Emacs's Rmail into a
Unix mail file that you could read into GNU Emacs's Rmail.


A detailed comparison by Rodney Zykowitz (rtgvax!ramin@eddie.mit.edu)

Enclosed are two difference listings. The first one is a cross-reference
by Key bindings. The second is by alphabetized function name.
Only those functions normally bound to keys in a
"standard" version are included. As far as I know it excludes 
bindings added here locally (but what do I know...)

The Gosling's is version 2.02 and runs on VMS 4.2. The Gnu is
version 16.56.1 running under Ultrix 1.1.


And could someone send me some info on Gnu on VMS. I seem to have entirely
missed that posting. If it is hopeless, I just might sit down and write
a Gnu emulator for Unipress and a Unipress emulator for Gnu... But the
thought of that already makes me wanna....


ramin...
Standard disclaimer excluded for humanitarian purposes.



Command Binding Cross-references. By key code:

                VMS (Unipress)                GNU Emacs
Key		Binding                       Binding
---		-------                       ---------------
^@              set-mark                      set-mark-command
^A              beginning-of-line             beginning-of-line
^B              backward-character            backward-char
^C              exit-emacs                    exit-recursive-edit
^D              delete-next-character         delete-char
^E              end-of-line                   end-of-line
^F              forward-character             forward-char
^G              illegal-operation
^H              delete-previous-character     help-command
^H-v                                          describe-variable
^H-w                                          where-is
^H-t                                          help-with-tutorial
^H-s                                          describe-syntax
^H-n                                          view-emacs-news
^H-^N                                         view-emacs-news
^H-m                                          describe-mode
^H-l                                          view-lossage
^H-i                                          info
^H-f                                          describe-function
^H-d                                          describe-function
^H-k                                          describe-key
^H-c                                          describe-key-briefly
^H-b                                          describe-bindings
^H-a                                          command-apropos
^H-^D                                         describe-distribution
^H-^C                                         describe-copying
^H-?                                          help-for-help
^H-^H                                         help-for-help
^I              self-insert                   indent-for-tab-command
^J              newline-and-indent            newline-and-indent
^K              kill-to-end-of-line           kill-line
^L              redraw-display                recenter
^M              newline                       newline
^N              next-line                     next-line
^O              newline-and-backup            open-line
^P              previous-line                 previous-line
^Q              quote-character               quoted-insert
^R              search-reverse                isearch-backward
^S              search-forward                isearch-forward
^T              transpose-characters          transpose-chars
^U              argument-prefix               universal-argument
^V              next-page                     scroll-up
^W              delete-to-killbuffer          kill-region
^X              ^X-prefix                     Control-x-prefix
^X-^A                                         add-mode-abbrev
^X-^B           list-buffers                  list-buffers
^X-^C           exit-emacs                    save-buffers-kill-emacs
^X-^D           describe-word-in-buffer       list-directory
^X-^E           compile-it                    eval-last-sexp
^X-^F           write-pause-or-exit           find-file
^X-^H                                         inverse-add-mode-abbrev
^X-^I           insert-file                   indent-rigidly
^X-^L                                         downcase-region
^X-^M           write-modified-files
^X-^N           next-error                    set-goal-column
^X-^O           use-old-buffer                delete-blank-linkes
^X-^P                                         mark-page
^X-^Q                                         toggle-read-only
^X-^R           read-file                     find-file-read-only
^X-^S           write-current-file            save-buffer
^X-^T                                         transpose-lines
^X-^U           new-undo                      upcase-region
^X-^V           visit-file                    find-alternate-file
^X-^W           write-named-file              write-file
^X-^X           exchange-dot-and-mark         exchange-dot-and-mark
^X-^Z           shrink-window                 suspend-emacs
^X-ESC                                        repeat-complex-command
^X-!            execute-monitor-command
^X-$                                          set-selective-display
^X-(            start-remembering             start-kbd-macro
^X-)            stop-remembering              end-kbd-macro
^X-+                                          add-global-abbrev
^X--                                          inverse-add-global-abbrev
^X-.                                          set-fill-prefix
^X-/                                          dot-to-register
^X-0                                          delete-window
^X-1            delete-other-windows          delete-other-windows
^X-2            split-current-window          split-window-vertically
^X-4                                          ctl-x-4-prefix
^X-4-^F                                       find-file-other-window
^X-4-.                                        find-tag-other-window
^X-4-b                                        pop-to-buffer
^X-4-d                                        dired-other-window
^X-4-f                                        find-file-other-window
^X-4-m                                        mail-other-window
^X-5                                          split-window-horizontally
^X-;                                          set-comment-column
^X-<                                          scroll-left
^X-=                                          what-cursor-position
^X->                                          scroll-right
^X-[                                          backward-page
^X-]                                          forward-page
^X-^                                          enlarge-window
^X-`                                          next-error
^X-a                                          append-to-buffer
^X-b            switch-to-buffer              switch-to-buffer
^X-d            delete-window                 dired
^X-e            execute-keyboard-macro        call-last-kbd-macro
^X-f                                          set-fill-column
^X-g                                          insert-register
^X-h                                          mark-whole-buffer
^X-i                                          insert-file
^X-j                                          register-to-dot
^X-k                                          kill-buffer
^X-l                                          count-lines-page
^X-m                                          mail
^X-n            next-window                   narrow-to-region
^X-o                                          other-window
^X-p            previous-window               narrow-to-page
^X-q                                          kbd-macro-query
^X-r                                          copy-rectangle-to-register
^X-s                                          save-some-buffers
^X-u                                          advertised-undo
^X-w                                          widen
^X-x                                          copy-to-register
^X-z            enlarge-window
^X-{                                          shrink-window-horizontally
^X-}                                          enlarge-window-horizontally
^X-DEL                                        backward-kill-sentence
^Y              yank-from-killbuffer          yank
^Z              scroll-one-line-up            suspend-emacs
ESC             ESC-prefix
ESC-^@                                        mark-sexp
ESC-^A                                        beginning-of-defun
ESC-^B                                        backward-sexp
ESC-^C          exit-emacs                    exit-recursive-edit
ESC-^D                                        down-list
ESC-^E                                        end-of-defun
ESC-^F                                        forward-sexp
ESC-^H                                        mark-defun
ESC-^J                                        indent-new-comment-line
ESC-^K                                        kill-sexp
ESC-^N                                        forward-list
ESC-^O                                        split-line
ESC-^P                                        backward-list
ESC-^S                                        isearch-forward-regexp
ESC-^T                                        transpose-sexps
ESC-^U                                        backward-up-list
ESC-^V          page-next-window              scroll-other-window
ESC-^W          delete-region-to-buffer       append-next-kill
ESC-^Y          yank-buffer
ESC-ESC         execute-mlisp-line            eval-expression
ESC-^^          case-region-invert
ESC-^\                                        indent-region
ESC-<SP>                                      just-one-space
ESC-!           line-to-top-of-window         shell-command
ESC-$                                         spell-word
ESC-%                                         query-replace
ESC-'                                         abbrev-prefix-mark
ESC-(           backward-paragraph            insert-parentheses
ESC-)           forward-paragraph             move-past-close-and-reindent
ESC-,           beginning-of-window           tags-loop-continue
ESC--           meta-minus                    negative-argument
ESC-.           end-of-window                 find-tag
ESC-0..ESC-9    meta-digit                    digit-argument
ESC-;                                         indent-for-comment
ESC-<           beginning-of-file             beginning-of-buffer
ESC-=                                         count-lines-region
ESC->           end-of-file                   end-of-buffer
ESC-@                                         mark-word
ESC-[                                         backward-paragraph
ESC-\                                         delete-horizontal-space
ESC-]                                         forward-paragraph
ESC-?           apropos
ESC-^           case-word-invert              delete-indentation
ESC-a           backward-sentence             backward-sentence
ESC-b           backward-word                 backward-word
ESC-d           delete-next-word              kill-word
ESC-e           forward-sentence              forward-sentence
ESC-f           forward-word                  forward-word
ESC-g                                         fill-region
ESC-h           delete-previous-word          mark-paragraph
ESC-j           indent-C-procedure            indent-new-comment-line
ESC-k                                         kill-sentence
ESC-l           case-word-lower               downcase-word
ESC-q           query-replace-string          fill-paragraph
ESC-r           replace-string                move-to-window-line
ESC-t                                         transpose-words
ESC-u           case-word-upper               upcase-word
ESC-v           previous-page                 scroll-down
ESC-w                                         copy-region-as-kill
ESC-x           execute-extended-command      execute-extended-command
ESC-y                                         yank-pop
ESC-z           scroll-one-line-down          zap-to-char
ESC-|                                         shell-command-on-region
ESC-~                                         not-modified
ESC-DEL                                       backward-kill-word
^_              return-to-monitor
 ..,            self-insert
-               minus
.../            self-insert
0..9            digit
:..~            self-insert
^?              delete-previous-character




Command Binding Cross-references. By name:

Command				VMS (Unipress) Key	GNU Key
-----------------------------	---------------------	------------
abbrev-prefix-mark		                        ESC-'
add-global-abbrev					^X-+
add-mode-abbrev						^X-^A
advertised-undo						^X-u
append-next-kill					ESC-^W
append-to-buffer					^X-a
apropos				ESC-?
argument-prefix			^U
backward-char						^B
backward-character            	^B
backward-kill-sentence					^X-DEL
backward-kill-word					ESC-DEL
backward-list						ESC-^P
backward-page						^X-[
backward-paragraph		ESC-(
backward-paragraph            				ESC-[
backward-sentence		ESC-a
backward-sentence             				ESC-a
backward-sexp						ESC-^B
backward-up-list					ESC-^U
backward-word			ESC-b
backward-word                 				ESC-b
beginning-of-buffer					ESC-<
beginning-of-defun					ESC-^A
beginning-of-file         	ESC-<
beginning-of-line		^A
beginning-of-line					^A
beginning-of-window        	ESC-,
call-last-kbd-macro					^X-e
case-region-invert		ESC-^^
case-word-invert              	ESC-^
case-word-lower               	ESC-l
case-word-upper               	ESC-u
command-apropos						^H-a
compile-it                	^X-^E    
control-x-prefix		^X
control-x-prefix                  			^X   
copy-rectangle-to-register				^X-r
copy-region-as-kill					ESC-w
copy-to-register					^X-x
count-lines-page					^X-l
count-lines-region					ESC-=
ctl-x-4-prefix						^X-4
delete-blank-linkes					^X-^O
delete-char						^D
delete-horizontal-space					ESC-\
delete-indentation					ESC-^
delete-next-character         	^D
delete-next-word              	ESC-d
delete-other-windows		^X-1
delete-other-windows          				^X-1
delete-previous-character	^H			^?
delete-previous-character     	^?
delete-previous-word          	ESC-h
delete-region-to-buffer       	ESC-^W
delete-to-killbuffer      	^W
delete-window						^X-0
delete-window            	^X-d
describe-bindings					^H-b
describe-copying					^H-^C
describe-distribution					^H-^D
describe-function					^H-f
describe-function					^H-d
describe-key						^H-k
describe-key-briefly					^H-c
describe-mode						^H-m
describe-syntax						^H-s
describe-variable					^H-v
describe-word-in-buffer    	^X-^D
digit				0..9
digit							0..9
digit-argument						ESC-0..ESC-9
dired							^X-d
dired-other-window					^X-4-d
dot-to-register						^X-/
down-list						ESC-^D
downcase-region						^X-^L
downcase-word						ESC-l
end-kbd-macro						^X-)
end-of-buffer						ESC->
end-of-defun						ESC-^E
end-of-file                   	ESC->
end-of-line			^E
end-of-line                   				^E
end-of-window                 	ESC-.
enlarge-window						^X-^
enlarge-window			^X-z
enlarge-window-horizontally				^X-}
esc-prefix			ESC
esc-prefix						ESC
eval-expression						ESC-ESC
eval-last-sexp						^X-^E
exchange-dot-and-mark		^X-^X
exchange-dot-and-mark         				^X-^X
execute-extended-command	ESC-x
execute-extended-command      				ESC-x
execute-keyboard-macro      	^X-e
execute-mlisp-line          	ESC-ESC
execute-monitor-command		^X-!
exit-emacs                    	^C
exit-emacs                    	^X-^C
exit-emacs                    	ESC-^C
exit-recursive-edit		^C
exit-recursive-edit					ESC-^C
fill-paragraph						ESC-q
fill-region						ESC-g
find-alternate-file					^X-^V
find-file						^X-^F
find-file-other-window					^X-4-^F
find-file-other-window					^X-4-f
find-file-read-only					^X-^R
find-tag						ESC-.
find-tag-other-window					^X-4-.
forward-char						^F
forward-character             	^F
forward-list						ESC-^N
forward-page						^X-]
forward-paragraph		ESC-)
forward-paragraph             				ESC-]
forward-sentence		ESC-e
forward-sentence              				ESC-e
forward-sexp						ESC-^F
forward-word			ESC-f
forward-word                  				ESC-f
help-command						^H
help-for-help						^H-?
help-for-help						^H-^H
help-with-tutorial					^H-t
illegal-operation     		^G        
indent-C-procedure            	ESC-j
indent-for-comment					ESC-;
indent-for-tab-command					^I
indent-new-comment-line					ESC-^J
indent-new-comment-line					ESC-j
indent-region						ESC-^\
indent-rigidly						^X-^I
info							^H-i
insert-file			^X-^I
insert-file                   				^X-i
insert-parentheses					ESC-(
insert-register						^X-g
inverse-add-global-abbrev				^X--
inverse-add-mode-abbrev					^X-^H
isearch-backward					^R
isearch-forward						^S
isearch-forward-regexp					ESC-^S
just-one-space						ESC-<SP>
kbd-macro-query						^X-q
kill-buffer						^X-k
kill-line						^K
kill-region						^W
kill-sentence						ESC-k
kill-sexp						ESC-^K
kill-to-end-of-line           	^K
kill-word						ESC-d
line-to-top-of-window         	ESC-!
list-buffers			^X-^B
list-buffers                  				^X-^B
list-directory						^X-^D
mail							^X-m
mail-other-window					^X-4-m
mark-defun						^X-^H
mark-page						^X-^P
mark-paragraph						ESC-h
mark-sexp						ESC-^@
mark-whole-buffer					^X-h
mark-word						ESC-@
meta-digit                    	ESC-0..ESC-9
meta-minus                    	ESC--
minus				-
minus							-
move-past-close-and-reindent				ESC-)
move-to-window-line					ESC-r
narrow-to-page						^X-p
narrow-to-region					^X-n
negative-argument					ESC--
new-undo                      	^X-^U
newline				^M
newline                       				^M
newline-and-backup            	^O
newline-and-indent		^J
newline-and-indent            				^J
next-error			^X-^N
next-error                    				^X-`
next-line			^N
next-line                     				^N
next-page                     	^V
next-window                   	^X-n
not-modified						ESC-~
open-line						^O
other-window						^X-o
page-next-window              	ESC-^V
pop-to-buffer						^X-4-b
previous-line			^P
previous-line                 				^P
previous-page                 	ESC-v
previous-window               	^X-p
query-replace						ESC-%
query-replace-string          	ESC-q
quote-character               	^Q
quoted-insert						^Q
read-file                     	^X-^R
recenter						^L
redraw-display                	^L
register-to-dot						^X-j
repeat-complex-command					^X-ESC
replace-string                	ESC-r
return-to-monitor		^_(CTL-/)
save-buffer						^X-^S
save-buffers-kill-emacs					^X-^C
save-some-buffers					^X-s
scroll-down						ESC-v
scroll-left						^X-<
scroll-one-line-down          	ESC-z
scroll-one-line-up            	^Z
scroll-other-window					ESC-^V
scroll-right						^X->
scroll-up						^V
search-forward                	^S
search-reverse                	^R
self-insert			^I
self-insert			<SP>..,
self-insert			.../
self-insert                   	:..~
set-comment-column					^X-;
set-fill-column						^X-f
set-fill-prefix						^X-.
set-goal-column						^X-^N
set-mark			^@
set-mark-command					^@
set-selective-display					^X-$
shell-command						ESC-!
shell-command-on-region					ESC-|
shrink-window                 	^X-^Z
shrink-window-horizontally				^X-{
spell-word						ESC-$
split-current-window          	^X-2
split-line						ESC-^O
split-window-horizontally				^X-5
split-window-vertically					^X-2
start-kbd-macro						ESC-(
start-remembering             	^X-(
stop-remembering              	^X-)
suspend-emacs						^X-^Z
suspend-emacs						^Z
switch-to-buffer		^X-b
switch-to-buffer              				^X-b
tags-loop-continue					ESC-,
toggle-read-only					^X-^Q
transpose-characters          	^T
transpose-chars						^T
transpose-lines						^X-^T
transpose-sexps						ESC-^T
transpose-words						ESC-t
universal-argument					^U
upcase-region						^X-^U
upcase-word						ESC-u
use-old-buffer                	^X-^O
view-emacs-news						^H-^N
view-emacs-news						^H-n
view-lossage						^H-l
visit-file                    	^X-^V
what-cursor-position					^X-=
where-is						^H-w
widen							^X-w
write-current-file            	^X-^S
write-file						^X-^W
write-modified-files		^X-^M
write-named-file              	^X-^W
write-pause-or-exit           	^X-^F
yank							^Y
yank-buffer			ESC-^Y
yank-from-killbuffer          	^Y
yank-pop						ESC-y
zap-to-char						ESC-z
